<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /* 
            1. 定义函数有几种方式，有什么区别？
           
            声明式函数：以声明名字形式声明函数
            赋值式函数：以表达式形式赋值表达函数
           
            2.return 关键字有那两种作用

            1.给函数调用时一个返回值，即返回一个结果值
            2.中断代码执行

            3.函数实参数和形参个数不等时会发生什么？举例说明
            
            形参多时：function fn(a,b,c){
                        console.log(a);//23
                        console.log(b);//65
                        console.log(c);//undefined
                        }
                       fn(23,65)

            实参多时：function fn(a,b,c){
                        console.log(a);//32
                        console.log(b);//58
                        console.log(c);//94
                        }
                       fn(32,58,94,64)//最后那个数不被调用，但是可以通过arguments 间接使用。


            4.请定义一个函数，该函数功能为，传入一个值，返回这个值的平方值;请再写一个函数,传入两个值，然后计算第一个值的第二个值的次方。如传入 x，y。求x的y次方是多少
            
            function fn(){
                var a=prompt("输入一个值");
                var math = a * a;
                return math;
            }
            var m=fn()
            window.alert("a的平方是" + m)

            // x的y次方
            第一种：
            function fn1(){
                var x=prompt("输入x值");
                var y=prompt("输入y值");
                var xy=Math.pow(x,y);
                return xy;
            }
            var Math=fn1();
            window.alert("x的y次方是" + Math);
            

            第二种:
            var x=prompt("输入x值");
            var y=prompt("输入y值");
            function fn(x,y){
                var sum=1
                for(var i=1;i <= y;i++){
                    sum *= x;
                }
                return sum;
            }
            var res = fn(x,y);
            window.alert("x的y次方是" + res);




            5.请写出一个函数，功能为：传入 2 个值，则返回其中的最大值；请再写一个函数，传入 3 个值，返回其中的最大值
            
            两个数比大小
            第一种    
            function fn2(){
                var x=prompt("输入m值");
                var y=prompt("输入m1值");
                if(x<=y){
                    window.alert(y);
                }else{
                    window.alert(x);
                }
            }
            fn2()

            第二种
            var x = prompt("输入x值");
            var y = prompt("输入y值");
            function fn(x,y){
                return x > y ? x : y;
            }
            var max = fn(x,y);
            alert("最大值" + max)



            三个数比大小
            function fn3(){
                var m=prompt("输入m值");
                var m1=prompt("输入m1值");
                var m2=prompt("输入m2值");
                if(m < m1 && m1 < m2){
                    window.alert("最大值m2：" + m2);
                }else if(m < m1 && m1 > m2){
                    window.alert("最大值m1：" + m1);
                }else if(m > m1 && m > m2){
                    window.alert("最大值m：" + m);
                }else if(m > m1 && m < m2){
                    window.alert("最大值m2:" + m2)
                }else if(m2 < m1 && m > m1){
                    window.alert("最大值m：" + m);
                }else if(m2 < m1 && m < m1){
                    window.alert("最大值m1：" + m1)
                }
            }
            fn3()

            第二种方法
            var a = prompt("输入a值");
            var b = prompt("输入b值");
            var c = prompt("输入c值");
            function fn(a,b,c){
                var max = a > b ? a : b;
                return max > c ? max : c;
            }
            var maxthree = fn(a,b,c);
            alert("最大值:" + maxthree)

            
            
            6.请定义一个函数，输入一个 N 值，则计算出该值的阶乘，即：`n! = 1*2*3*4*5*6*...`
        */
            // 6.第一种：
            var n=prompt('输入数字');
            function fn3(n){
                // var n=prompt('输入数字');
                var sum=1;
                for(var i=1;i<=n;i++){
                 sum *= i;   
                }
                return sum;
            }
            var n2 = fn3(n);
            window.alert(n2);

            // 第二种：
            var n = window.prompt("输入n值")-0;
            function fn3(n){
                if(n == 1) return 1;
                return n * fn3(n-1);
            }
            var n2 = fn3(n);
            window.alert(n2);
    </script>
</body>
</html>